/-- This set of tests checks the API, internals, and non-Perl stuff for UTF-8
    support, excluding Unicode properties. --/

/\x{100}/8DZ
------------------------------------------------------------------
        Bra
        \x{100}
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 196
Need char = 128

/\x{1000}/8DZ
------------------------------------------------------------------
        Bra
        \x{1000}
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 225
Need char = 128

/\x{10000}/8DZ
------------------------------------------------------------------
        Bra
        \x{10000}
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 240
Need char = 128

/\x{100000}/8DZ
------------------------------------------------------------------
        Bra
        \x{100000}
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 244
Need char = 128

/\x{1000000}/8DZ
------------------------------------------------------------------
        Bra
        \x{1000000}
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 249
Need char = 128

/\x{4000000}/8DZ
------------------------------------------------------------------
        Bra
        \x{4000000}
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 252
Need char = 128

/\x{7fffFFFF}/8DZ
------------------------------------------------------------------
        Bra
        \x{7fffffff}
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 253
Need char = 191

/[\x{ff}]/8DZ
------------------------------------------------------------------
        Bra
        \x{ff}
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 195
Need char = 191

/[\x{100}]/8DZ
------------------------------------------------------------------
        Bra
        [\x{100}]
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
No first char
No need char

/\x{ffffffff}/8
Failed: character value in \x{...} sequence is too large at offset 11

/\x{100000000}/8
Failed: character value in \x{...} sequence is too large at offset 12

/^\x{100}a\x{1234}/8
    \x{100}a\x{1234}bcd
 0: \x{100}a\x{1234}

/\x80/8DZ
------------------------------------------------------------------
        Bra
        \x{80}
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 194
Need char = 128

/\xff/8DZ
------------------------------------------------------------------
        Bra
        \x{ff}
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 195
Need char = 191

/\x{0041}\x{2262}\x{0391}\x{002e}/DZ8
------------------------------------------------------------------
        Bra
        A\x{2262}\x{391}.
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 'A'
Need char = '.'
    \x{0041}\x{2262}\x{0391}\x{002e}
 0: A\x{2262}\x{391}.
    
/\x{D55c}\x{ad6d}\x{C5B4}/DZ8 
------------------------------------------------------------------
        Bra
        \x{d55c}\x{ad6d}\x{c5b4}
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 237
Need char = 180
    \x{D55c}\x{ad6d}\x{C5B4} 
 0: \x{d55c}\x{ad6d}\x{c5b4}

/\x{65e5}\x{672c}\x{8a9e}/DZ8
------------------------------------------------------------------
        Bra
        \x{65e5}\x{672c}\x{8a9e}
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 230
Need char = 158
    \x{65e5}\x{672c}\x{8a9e}
 0: \x{65e5}\x{672c}\x{8a9e}

/\x{80}/DZ8
------------------------------------------------------------------
        Bra
        \x{80}
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 194
Need char = 128

/\x{084}/DZ8
------------------------------------------------------------------
        Bra
        \x{84}
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 194
Need char = 132

/\x{104}/DZ8
------------------------------------------------------------------
        Bra
        \x{104}
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 196
Need char = 132

/\x{861}/DZ8
------------------------------------------------------------------
        Bra
        \x{861}
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 224
Need char = 161

/\x{212ab}/DZ8
------------------------------------------------------------------
        Bra
        \x{212ab}
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 240
Need char = 171

/.{3,5}X/DZ8
------------------------------------------------------------------
        Bra
        Any{3}
        Any{0,2}
        X
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
No first char
Need char = 'X'
    \x{212ab}\x{212ab}\x{212ab}\x{861}X
 0: \x{212ab}\x{212ab}\x{212ab}\x{861}X


/.{3,5}?/DZ8
------------------------------------------------------------------
        Bra
        Any{3}
        Any{0,2}?
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
No first char
No need char
    \x{212ab}\x{212ab}\x{212ab}\x{861}
 0: \x{212ab}\x{212ab}\x{212ab}

/(?<=\C)X/8
Failed: \C not allowed in lookbehind assertion at offset 6

/-- This one is here not because it's different to Perl, but because the way
the captured single-byte is displayed. (In Perl it becomes a character, and you
can't tell the difference.) --/
    
/X(\C)(.*)/8
    X\x{1234}
 0: X\x{1234}
 1: \xe1
 2: \x88\xb4
    X\nabc 
 0: X\x{0a}abc
 1: \x{0a}
 2: abc

/-- This one is here because Perl gives out a grumbly error message (quite 
correctly, but that messes up comparisons). --/
    
/a\Cb/8
    *** Failers 
No match
    a\x{100}b 
No match
    
/^[ab]/8DZ
------------------------------------------------------------------
        Bra
        ^
        [ab]
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: anchored utf8
No first char
No need char
    bar
 0: b
    *** Failers
No match
    c
No match
    \x{ff}
No match
    \x{100}  
No match

/^[^ab]/8DZ
------------------------------------------------------------------
        Bra
        ^
        [\x00-`c-\xff] (neg)
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: anchored utf8
No first char
No need char
    c
 0: c
    \x{ff}
 0: \x{ff}
    \x{100}  
 0: \x{100}
    *** Failers 
 0: *
    aaa
No match
  
/[^ab\xC0-\xF0]/8SDZ
------------------------------------------------------------------
        Bra
        [\x00-`c-\xbf\xf1-\xff] (neg)
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
No first char
No need char
Subject length lower bound = 1
Starting byte set: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x09 \x0a 
  \x0b \x0c \x0d \x0e \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 
  \x1a \x1b \x1c \x1d \x1e \x1f \x20 ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 
  5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y 
  Z [ \ ] ^ _ ` c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f 
  \xc2 \xc3 \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb \xcc \xcd \xce \xcf \xd0 
  \xd1 \xd2 \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda \xdb \xdc \xdd \xde \xdf 
  \xe0 \xe1 \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 \xea \xeb \xec \xed \xee 
  \xef \xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 \xfa \xfb \xfc \xfd 
  \xfe \xff 
    \x{f1}
 0: \x{f1}
    \x{bf}
 0: \x{bf}
    \x{100}
 0: \x{100}
    \x{1000}   
 0: \x{1000}
    *** Failers
 0: *
    \x{c0} 
No match
    \x{f0} 
No match

/Ā{3,4}/8SDZ
------------------------------------------------------------------
        Bra
        \x{100}{3}
        \x{100}?
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 196
Need char = 128
Subject length lower bound = 3
No set of starting bytes
  \x{100}\x{100}\x{100}\x{100\x{100}
 0: \x{100}\x{100}\x{100}

/(\x{100}+|x)/8SDZ
------------------------------------------------------------------
        Bra
        CBra 1
        \x{100}+
        Alt
        x
        Ket
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf8
No first char
No need char
Subject length lower bound = 1
Starting byte set: x \xc4 

/(\x{100}*a|x)/8SDZ
------------------------------------------------------------------
        Bra
        CBra 1
        \x{100}*+
        a
        Alt
        x
        Ket
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf8
No first char
No need char
Subject length lower bound = 1
Starting byte set: a x \xc4 

/(\x{100}{0,2}a|x)/8SDZ
------------------------------------------------------------------
        Bra
        CBra 1
        \x{100}{0,2}
        a
        Alt
        x
        Ket
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf8
No first char
No need char
Subject length lower bound = 1
Starting byte set: a x \xc4 

/(\x{100}{1,2}a|x)/8SDZ
------------------------------------------------------------------
        Bra
        CBra 1
        \x{100}
        \x{100}{0,1}
        a
        Alt
        x
        Ket
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf8
No first char
No need char
Subject length lower bound = 1
Starting byte set: x \xc4 

/\x{100}*(\d+|"(?1)")/8
    1234
 0: 1234
 1: 1234
    "1234" 
 0: "1234"
 1: "1234"
    \x{100}1234
 0: \x{100}1234
 1: 1234
    "\x{100}1234"  
 0: \x{100}1234
 1: 1234
    \x{100}\x{100}12ab 
 0: \x{100}\x{100}12
 1: 12
    \x{100}\x{100}"12" 
 0: \x{100}\x{100}"12"
 1: "12"
    *** Failers 
No match
    \x{100}\x{100}abcd
No match

/\x{100}/8DZ
------------------------------------------------------------------
        Bra
        \x{100}
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 196
Need char = 128

/\x{100}*/8DZ
------------------------------------------------------------------
        Bra
        \x{100}*
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
No first char
No need char

/a\x{100}*/8DZ
------------------------------------------------------------------
        Bra
        a
        \x{100}*
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 'a'
No need char

/ab\x{100}*/8DZ
------------------------------------------------------------------
        Bra
        ab
        \x{100}*
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 'a'
Need char = 'b'

/a\x{100}\x{101}*/8DZ
------------------------------------------------------------------
        Bra
        a\x{100}
        \x{101}*
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 'a'
Need char = 128

/a\x{100}\x{101}+/8DZ
------------------------------------------------------------------
        Bra
        a\x{100}
        \x{101}+
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 'a'
Need char = 129

/\x{100}*A/8DZ
------------------------------------------------------------------
        Bra
        \x{100}*+
        A
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
No first char
Need char = 'A'
    A
 0: A

/\x{100}*\d(?R)/8DZ
------------------------------------------------------------------
        Bra
        \x{100}*+
        \d
        Recurse
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
No first char
No need char

/[^\x{c4}]/DZ
------------------------------------------------------------------
        Bra
        [^\xc4]
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
No first char
No need char

/[^\x{c4}]/8DZ
------------------------------------------------------------------
        Bra
        [\x00-\xc3\xc5-\xff] (neg)
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
No first char
No need char

/[\x{100}]/8DZ
------------------------------------------------------------------
        Bra
        [\x{100}]
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
No first char
No need char
    \x{100}
 0: \x{100}
    Z\x{100}
 0: \x{100}
    \x{100}Z
 0: \x{100}
    *** Failers 
No match

/[Z\x{100}]/8DZ
------------------------------------------------------------------
        Bra
        [Z\x{100}]
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
No first char
No need char
    Z\x{100}
 0: Z
    \x{100}
 0: \x{100}
    \x{100}Z
 0: \x{100}
    *** Failers 
No match

/[\x{200}-\x{100}]/8
Failed: range out of order in character class at offset 15

/[Ā-Ą]/8
    \x{100}
 0: \x{100}
    \x{104}
 0: \x{104}
    *** Failers
No match
    \x{105}
No match
    \x{ff}    
No match

/[z-\x{100}]/8DZ
------------------------------------------------------------------
        Bra
        [z-\x{100}]
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
No first char
No need char

/[z\Qa-d]Ā\E]/8DZ
------------------------------------------------------------------
        Bra
        [\-\]adz\x{100}]
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
No first char
No need char
    \x{100}
 0: \x{100}
    Ā 
 0: \x{100}

/[\xFF]/DZ
------------------------------------------------------------------
        Bra
        \xff
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
First char = 255
No need char
    >\xff<
 0: \xff

/[\xff]/DZ8
------------------------------------------------------------------
        Bra
        \x{ff}
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 195
Need char = 191
    >\x{ff}<
 0: \x{ff}

/[^\xFF]/DZ
------------------------------------------------------------------
        Bra
        [^\xff]
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
No options
No first char
No need char

/[^\xff]/8DZ
------------------------------------------------------------------
        Bra
        [\x00-\xfe] (neg)
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
No first char
No need char

/[Ä-Ü]/8
    Ö # Matches without Study
 0: \x{d6}
    \x{d6}
 0: \x{d6}
    
/[Ä-Ü]/8S
    Ö <-- Same with Study
 0: \x{d6}
    \x{d6}
 0: \x{d6}
    
/[\x{c4}-\x{dc}]/8 
    Ö # Matches without Study
 0: \x{d6}
    \x{d6} 
 0: \x{d6}

/[\x{c4}-\x{dc}]/8S
    Ö <-- Same with Study
 0: \x{d6}
    \x{d6} 
 0: \x{d6}

/[�]/8
Failed: invalid UTF-8 string at offset 1

/�/8
Failed: invalid UTF-8 string at offset 0

/���xxx/8
Failed: invalid UTF-8 string at offset 0

/���xxx/8?DZSS
------------------------------------------------------------------
        Bra
        \X{c0}\X{c0}\X{c0}xxx
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8 no_utf8_check
First char = 195
Need char = 'x'

/abc/8
    �]
Error -10 (bad UTF-8 string) offset=0 reason=6
    �
Error -10 (bad UTF-8 string) offset=0 reason=1
    ���
Error -10 (bad UTF-8 string) offset=0 reason=6
    ���\?
No match
    \xe1\x88 
Error -10 (bad UTF-8 string) offset=0 reason=1
    \P\xe1\x88 
Error -10 (bad UTF-8 string) offset=0 reason=1
    \P\P\xe1\x88 
Error -25 (short UTF-8 string) offset=0 reason=1
    XX\xea
Error -10 (bad UTF-8 string) offset=2 reason=2
    \O0XX\xea
Error -10 (bad UTF-8 string)
    \O1XX\xea
Error -10 (bad UTF-8 string)
    \O2XX\xea
Error -10 (bad UTF-8 string) offset=2 reason=2
    XX\xf1
Error -10 (bad UTF-8 string) offset=2 reason=3
    XX\xf8  
Error -10 (bad UTF-8 string) offset=2 reason=4
    XX\xfc
Error -10 (bad UTF-8 string) offset=2 reason=5
    ZZ\xea\xaf\x20YY
Error -10 (bad UTF-8 string) offset=2 reason=7
    ZZ\xfd\xbf\xbf\x2f\xbf\xbfYY  
Error -10 (bad UTF-8 string) offset=2 reason=8
    ZZ\xfd\xbf\xbf\xbf\x2f\xbfYY  
Error -10 (bad UTF-8 string) offset=2 reason=9
    ZZ\xfd\xbf\xbf\xbf\xbf\x2fYY  
Error -10 (bad UTF-8 string) offset=2 reason=10
    ZZ\xffYY
Error -10 (bad UTF-8 string) offset=2 reason=21
    ZZ\xfeYY  
Error -10 (bad UTF-8 string) offset=2 reason=21

/anything/8
    \xc0\x80
Error -10 (bad UTF-8 string) offset=0 reason=15
    \xc1\x8f 
Error -10 (bad UTF-8 string) offset=0 reason=15
    \xe0\x9f\x80
Error -10 (bad UTF-8 string) offset=0 reason=16
    \xf0\x8f\x80\x80 
Error -10 (bad UTF-8 string) offset=0 reason=17
    \xf8\x87\x80\x80\x80  
Error -10 (bad UTF-8 string) offset=0 reason=18
    \xfc\x83\x80\x80\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=19
    \xfe\x80\x80\x80\x80\x80  
Error -10 (bad UTF-8 string) offset=0 reason=21
    \xff\x80\x80\x80\x80\x80  
Error -10 (bad UTF-8 string) offset=0 reason=21
    \xc3\x8f
No match
    \xe0\xaf\x80
No match
    \xe1\x80\x80
No match
    \xf0\x9f\x80\x80 
No match
    \xf1\x8f\x80\x80 
No match
    \xf8\x88\x80\x80\x80  
Error -10 (bad UTF-8 string) offset=0 reason=11
    \xf9\x87\x80\x80\x80  
Error -10 (bad UTF-8 string) offset=0 reason=11
    \xfc\x84\x80\x80\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=12
    \xfd\x83\x80\x80\x80\x80
Error -10 (bad UTF-8 string) offset=0 reason=12
    \?\xf8\x88\x80\x80\x80  
No match
    \?\xf9\x87\x80\x80\x80  
No match
    \?\xfc\x84\x80\x80\x80\x80
No match
    \?\xfd\x83\x80\x80\x80\x80
No match

/\x{100}abc(xyz(?1))/8DZ
------------------------------------------------------------------
        Bra
        \x{100}abc
        CBra 1
        xyz
        Recurse
        Ket
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf8
First char = 196
Need char = 'z'

/[^\x{100}]abc(xyz(?1))/8DZ
------------------------------------------------------------------
        Bra
        [^\x{100}]
        abc
        CBra 1
        xyz
        Recurse
        Ket
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf8
No first char
Need char = 'z'

/[ab\x{100}]abc(xyz(?1))/8DZ
------------------------------------------------------------------
        Bra
        [ab\x{100}]
        abc
        CBra 1
        xyz
        Recurse
        Ket
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 1
Options: utf8
No first char
Need char = 'z'

/(\x{100}(b(?2)c))?/DZ8
------------------------------------------------------------------
        Bra
        Brazero
        CBra 1
        \x{100}
        CBra 2
        b
        Recurse
        c
        Ket
        Ket
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 2
Options: utf8
No first char
No need char

/(\x{100}(b(?2)c)){0,2}/DZ8
------------------------------------------------------------------
        Bra
        Brazero
        Bra
        CBra 1
        \x{100}
        CBra 2
        b
        Recurse
        c
        Ket
        Ket
        Brazero
        CBra 1
        \x{100}
        CBra 2
        b
        Recurse
        c
        Ket
        Ket
        Ket
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 2
Options: utf8
No first char
No need char

/(\x{100}(b(?1)c))?/DZ8
------------------------------------------------------------------
        Bra
        Brazero
        CBra 1
        \x{100}
        CBra 2
        b
        Recurse
        c
        Ket
        Ket
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 2
Options: utf8
No first char
No need char

/(\x{100}(b(?1)c)){0,2}/DZ8
------------------------------------------------------------------
        Bra
        Brazero
        Bra
        CBra 1
        \x{100}
        CBra 2
        b
        Recurse
        c
        Ket
        Ket
        Brazero
        CBra 1
        \x{100}
        CBra 2
        b
        Recurse
        c
        Ket
        Ket
        Ket
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 2
Options: utf8
No first char
No need char

/\W/8
    A.B
 0: .
    A\x{100}B 
 0: \x{100}
  
/\w/8
    \x{100}X   
 0: X

/a\x{1234}b/P8
    a\x{1234}b
 0: a\x{1234}b

/^\ሴ/8DZ
------------------------------------------------------------------
        Bra
        ^
        \x{1234}
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: anchored utf8
No first char
No need char

/\777/I
Failed: octal value is greater than \377 (not in UTF-8 mode) at offset 3

/\777/8I
Capturing subpattern count = 0
Options: utf8
First char = 199
Need char = 191
  \x{1ff}
 0: \x{1ff}
  \777 
 0: \x{1ff}
  
/\x{100}*\d/8DZ
------------------------------------------------------------------
        Bra
        \x{100}*+
        \d
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
No first char
No need char

/\x{100}*\s/8DZ
------------------------------------------------------------------
        Bra
        \x{100}*+
        \s
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
No first char
No need char

/\x{100}*\w/8DZ
------------------------------------------------------------------
        Bra
        \x{100}*+
        \w
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
No first char
No need char

/\x{100}*\D/8DZ
------------------------------------------------------------------
        Bra
        \x{100}*
        \D
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
No first char
No need char

/\x{100}*\S/8DZ
------------------------------------------------------------------
        Bra
        \x{100}*
        \S
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
No first char
No need char

/\x{100}*\W/8DZ
------------------------------------------------------------------
        Bra
        \x{100}*
        \W
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
No first char
No need char

/\x{100}+\x{200}/8DZ
------------------------------------------------------------------
        Bra
        \x{100}++
        \x{200}
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 196
Need char = 128

/\x{100}+X/8DZ
------------------------------------------------------------------
        Bra
        \x{100}++
        X
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 196
Need char = 'X'

/X+\x{200}/8DZ
------------------------------------------------------------------
        Bra
        X++
        \x{200}
        Ket
        End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf8
First char = 'X'
Need char = 128

/()()()()()()()()()()
 ()()()()()()()()()()
 ()()()()()()()()()()
 ()()()()()()()()()()
 A (x) (?41) B/8x
    AxxB     
Matched, but too many substrings
 0: AxxB
 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 

/^[\x{100}\E-\Q\E\x{150}]/BZ8
------------------------------------------------------------------
        Bra
        ^
        [\x{100}-\x{150}]
        Ket
        End
------------------------------------------------------------------

/^[\QĀ\E-\QŐ\E]/BZ8
------------------------------------------------------------------
        Bra
        ^
        [\x{100}-\x{150}]
        Ket
        End
------------------------------------------------------------------

/^[\QĀ\E-\QŐ\E/BZ8
Failed: missing terminating ] for character class at offset 15

/^abc./mgx8<any>
    abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x{0085}abc7 \x{2028}abc8 \x{2029}abc9 JUNK
 0: abc1
 0: abc2
 0: abc3
 0: abc4
 0: abc5
 0: abc6
 0: abc7
 0: abc8
 0: abc9

/abc.$/mgx8<any>
    abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x{0085} abc7\x{2028} abc8\x{2029} abc9
 0: abc1
 0: abc2
 0: abc3
 0: abc4
 0: abc5
 0: abc6
 0: abc7
 0: abc8
 0: abc9

/^a\Rb/8<bsr_unicode>
    a\nb
 0: a\x{0a}b
    a\rb
 0: a\x{0d}b
    a\r\nb
 0: a\x{0d}\x{0a}b
    a\x0bb
 0: a\x{0b}b
    a\x0cb
 0: a\x{0c}b
    a\x{85}b   
 0: a\x{85}b
    a\x{2028}b 
 0: a\x{2028}b
    a\x{2029}b 
 0: a\x{2029}b
    ** Failers
No match
    a\n\rb    
No match

/^a\R*b/8<bsr_unicode>
    ab
 0: ab
    a\nb
 0: a\x{0a}b
    a\rb
 0: a\x{0d}b
    a\r\nb
 0: a\x{0d}\x{0a}b
    a\x0bb
 0: a\x{0b}b
    a\x0c\x{2028}\x{2029}b
 0: a\x{0c}\x{2028}\x{2029}b
    a\x{85}b   
 0: a\x{85}b
    a\n\rb    
 0: a\x{0a}\x{0d}b
    a\n\r\x{85}\x0cb 
 0: a\x{0a}\x{0d}\x{85}\x{0c}b

/^a\R+b/8<bsr_unicode>
    a\nb
 0: a\x{0a}b
    a\rb
 0: a\x{0d}b
    a\r\nb
 0: a\x{0d}\x{0a}b
    a\x0bb
 0: a\x{0b}b
    a\x0c\x{2028}\x{2029}b
 0: a\x{0c}\x{2028}\x{2029}b
    a\x{85}b   
 0: a\x{85}b
    a\n\rb    
 0: a\x{0a}\x{0d}b
    a\n\r\x{85}\x0cb 
 0: a\x{0a}\x{0d}\x{85}\x{0c}b
    ** Failers
No match
    ab  
No match

/^a\R{1,3}b/8<bsr_unicode>
    a\nb
 0: a\x{0a}b
    a\n\rb
 0: a\x{0a}\x{0d}b
    a\n\r\x{85}b
 0: a\x{0a}\x{0d}\x{85}b
    a\r\n\r\nb 
 0: a\x{0d}\x{0a}\x{0d}\x{0a}b
    a\r\n\r\n\r\nb 
 0: a\x{0d}\x{0a}\x{0d}\x{0a}\x{0d}\x{0a}b
    a\n\r\n\rb
 0: a\x{0a}\x{0d}\x{0a}\x{0d}b
    a\n\n\r\nb 
 0: a\x{0a}\x{0a}\x{0d}\x{0a}b
    ** Failers
No match
    a\n\n\n\rb
No match
    a\r
No match

/\H\h\V\v/8
    X X\x0a
 0: X X\x{0a}
    X\x09X\x0b
 0: X\x{09}X\x{0b}
    ** Failers
No match
    \x{a0} X\x0a   
No match
    
/\H*\h+\V?\v{3,4}/8 
    \x09\x20\x{a0}X\x0a\x0b\x0c\x0d\x0a
 0: \x{09} \x{a0}X\x{0a}\x{0b}\x{0c}\x{0d}
    \x09\x20\x{a0}\x0a\x0b\x0c\x0d\x0a
 0: \x{09} \x{a0}\x{0a}\x{0b}\x{0c}\x{0d}
    \x09\x20\x{a0}\x0a\x0b\x0c
 0: \x{09} \x{a0}\x{0a}\x{0b}\x{0c}
    ** Failers 
No match
    \x09\x20\x{a0}\x0a\x0b
No match
     
/\H\h\V\v/8
    \x{3001}\x{3000}\x{2030}\x{2028}
 0: \x{3001}\x{3000}\x{2030}\x{2028}
    X\x{180e}X\x{85}
 0: X\x{180e}X\x{85}
    ** Failers
No match
    \x{2009} X\x0a   
No match
    
/\H*\h+\V?\v{3,4}/8 
    \x{1680}\x{180e}\x{2007}X\x{2028}\x{2029}\x0c\x0d\x0a
 0: \x{1680}\x{180e}\x{2007}X\x{2028}\x{2029}\x{0c}\x{0d}
    \x09\x{205f}\x{a0}\x0a\x{2029}\x0c\x{2028}\x0a
 0: \x{09}\x{205f}\x{a0}\x{0a}\x{2029}\x{0c}\x{2028}
    \x09\x20\x{202f}\x0a\x0b\x0c
 0: \x{09} \x{202f}\x{0a}\x{0b}\x{0c}
    ** Failers 
No match
    \x09\x{200a}\x{a0}\x{2028}\x0b
No match
     
/[\h]/8BZ
------------------------------------------------------------------
        Bra
        [\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}]
        Ket
        End
------------------------------------------------------------------
    >\x{1680}
 0: \x{1680}

/[\h]{3,}/8BZ
------------------------------------------------------------------
        Bra
        [\x09 \xa0\x{1680}\x{180e}\x{2000}-\x{200a}\x{202f}\x{205f}\x{3000}]{3,}
        Ket
        End
------------------------------------------------------------------
    >\x{1680}\x{180e}\x{2000}\x{2003}\x{200a}\x{202f}\x{205f}\x{3000}<
 0: \x{1680}\x{180e}\x{2000}\x{2003}\x{200a}\x{202f}\x{205f}\x{3000}

/[\v]/8BZ
------------------------------------------------------------------
        Bra
        [\x0a-\x0d\x85\x{2028}-\x{2029}]
        Ket
        End
------------------------------------------------------------------

/[\H]/8BZ
------------------------------------------------------------------
        Bra
        [\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff\x{100}-\x{167f}\x{1681}-\x{180d}\x{180f}-\x{1fff}\x{200b}-\x{202e}\x{2030}-\x{205e}\x{2060}-\x{2fff}\x{3001}-\x{7fffffff}]
        Ket
        End
------------------------------------------------------------------

/[\V]/8BZ
------------------------------------------------------------------
        Bra
        [\x00-\x09\x0e-\x84\x86-\xff\x{100}-\x{2027}\x{2029}-\x{7fffffff}]
        Ket
        End
------------------------------------------------------------------

/.*$/8<any>
    \x{1ec5} 
 0: \x{1ec5}
    
/-- This tests the stricter UTF-8 check according to RFC 3629. --/ 
    
/X/8
    \x{0}\x{d7ff}\x{e000}\x{10ffff}
No match
    \x{d800}
Error -10 (bad UTF-8 string) offset=0 reason=14
    \x{d800}\?
No match
    \x{da00}
Error -10 (bad UTF-8 string) offset=0 reason=14
    \x{da00}\?
No match
    \x{dfff}
Error -10 (bad UTF-8 string) offset=0 reason=14
    \x{dfff}\?
No match
    \x{110000}    
Error -10 (bad UTF-8 string) offset=0 reason=13
    \x{110000}\?    
No match
    \x{2000000} 
Error -10 (bad UTF-8 string) offset=0 reason=11
    \x{2000000}\? 
No match
    \x{7fffffff} 
Error -10 (bad UTF-8 string) offset=0 reason=12
    \x{7fffffff}\? 
No match

/a\Rb/I8<bsr_anycrlf>
Capturing subpattern count = 0
Options: bsr_anycrlf utf8
First char = 'a'
Need char = 'b'
    a\rb
 0: a\x{0d}b
    a\nb
 0: a\x{0a}b
    a\r\nb
 0: a\x{0d}\x{0a}b
    ** Failers
No match
    a\x{85}b
No match
    a\x0bb     
No match

/a\Rb/I8<bsr_unicode>
Capturing subpattern count = 0
Options: bsr_unicode utf8
First char = 'a'
Need char = 'b'
    a\rb
 0: a\x{0d}b
    a\nb
 0: a\x{0a}b
    a\r\nb
 0: a\x{0d}\x{0a}b
    a\x{85}b
 0: a\x{85}b
    a\x0bb     
 0: a\x{0b}b
    ** Failers 
No match
    a\x{85}b\<bsr_anycrlf>
No match
    a\x0bb\<bsr_anycrlf>
No match
    
/a\R?b/I8<bsr_anycrlf>
Capturing subpattern count = 0
Options: bsr_anycrlf utf8
First char = 'a'
Need char = 'b'
    a\rb
 0: a\x{0d}b
    a\nb
 0: a\x{0a}b
    a\r\nb
 0: a\x{0d}\x{0a}b
    ** Failers
No match
    a\x{85}b
No match
    a\x0bb     
No match

/a\R?b/I8<bsr_unicode>
Capturing subpattern count = 0
Options: bsr_unicode utf8
First char = 'a'
Need char = 'b'
    a\rb
 0: a\x{0d}b
    a\nb
 0: a\x{0a}b
    a\r\nb
 0: a\x{0d}\x{0a}b
    a\x{85}b
 0: a\x{85}b
    a\x0bb     
 0: a\x{0b}b
    ** Failers 
No match
    a\x{85}b\<bsr_anycrlf>
No match
    a\x0bb\<bsr_anycrlf>
No match
 
/.*a.*=.b.*/8<ANY>
    QQQ\x{2029}ABCaXYZ=!bPQR
 0: ABCaXYZ=!bPQR
    ** Failers
No match
    a\x{2029}b
No match
    \x61\xe2\x80\xa9\x62 
No match

/[[:a\x{100}b:]]/8
Failed: unknown POSIX class name at offset 3

/a[^]b/<JS>8
    a\x{1234}b
 0: a\x{1234}b
    a\nb 
 0: a\x{0a}b
    ** Failers
No match
    ab  
No match
    
/a[^]+b/<JS>8
    aXb
 0: aXb
    a\nX\nX\x{1234}b 
 0: a\x{0a}X\x{0a}X\x{1234}b
    ** Failers
No match
    ab  
No match

/(\x{de})\1/
    \x{de}\x{de}
 0: \xde\xde
 1: \xde
    \x{123} 
** Character \x{123} is greater than 255 and UTF-8 mode is not enabled.
** Truncation will probably give the wrong result.
No match

/X/8f<any> 
    A\x{1ec5}ABCXYZ
 0: X

/(*UTF8)\x{1234}/
  abcd\x{1234}pqr
 0: \x{1234}

/(*CRLF)(*UTF8)(*BSR_UNICODE)a\Rb/I
Capturing subpattern count = 0
Options: bsr_unicode utf8
Forced newline sequence: CRLF
First char = 'a'
Need char = 'b'

/Xa{2,4}b/8
    X\P
Partial match: X
    Xa\P
Partial match: Xa
    Xaa\P 
Partial match: Xaa
    Xaaa\P
Partial match: Xaaa
    Xaaaa\P 
Partial match: Xaaaa
    
/Xa{2,4}?b/8
    X\P
Partial match: X
    Xa\P
Partial match: Xa
    Xaa\P 
Partial match: Xaa
    Xaaa\P
Partial match: Xaaa
    Xaaaa\P 
Partial match: Xaaaa
    
/Xa{2,4}+b/8
    X\P
Partial match: X
    Xa\P
Partial match: Xa
    Xaa\P 
Partial match: Xaa
    Xaaa\P
Partial match: Xaaa
    Xaaaa\P 
Partial match: Xaaaa
    
/X\x{123}{2,4}b/8
    X\P
Partial match: X
    X\x{123}\P
Partial match: X\x{123}
    X\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}\x{123}\x{123}
    
/X\x{123}{2,4}?b/8
    X\P
Partial match: X
    X\x{123}\P
Partial match: X\x{123}
    X\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}\x{123}\x{123}
    
/X\x{123}{2,4}+b/8
    X\P
Partial match: X
    X\x{123}\P
Partial match: X\x{123}
    X\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}\x{123}\x{123}
    
/X\x{123}{2,4}b/8
    Xx\P
No match
    X\x{123}x\P
No match
    X\x{123}\x{123}x\P 
No match
    X\x{123}\x{123}\x{123}x\P
No match
    X\x{123}\x{123}\x{123}\x{123}x\P 
No match
    
/X\x{123}{2,4}?b/8
    Xx\P
No match
    X\x{123}x\P
No match
    X\x{123}\x{123}x\P 
No match
    X\x{123}\x{123}\x{123}x\P
No match
    X\x{123}\x{123}\x{123}\x{123}x\P 
No match
    
/X\x{123}{2,4}+b/8
    Xx\P
No match
    X\x{123}x\P
No match
    X\x{123}\x{123}x\P 
No match
    X\x{123}\x{123}\x{123}x\P
No match
    X\x{123}\x{123}\x{123}\x{123}x\P 
No match
    
/X\d{2,4}b/8
    X\P
Partial match: X
    X3\P
Partial match: X3
    X33\P 
Partial match: X33
    X333\P
Partial match: X333
    X3333\P 
Partial match: X3333
    
/X\d{2,4}?b/8
    X\P
Partial match: X
    X3\P
Partial match: X3
    X33\P 
Partial match: X33
    X333\P
Partial match: X333
    X3333\P 
Partial match: X3333
    
/X\d{2,4}+b/8
    X\P
Partial match: X
    X3\P
Partial match: X3
    X33\P 
Partial match: X33
    X333\P
Partial match: X333
    X3333\P 
Partial match: X3333

/X\D{2,4}b/8
    X\P
Partial match: X
    Xa\P
Partial match: Xa
    Xaa\P 
Partial match: Xaa
    Xaaa\P
Partial match: Xaaa
    Xaaaa\P 
Partial match: Xaaaa
    
/X\D{2,4}?b/8
    X\P
Partial match: X
    Xa\P
Partial match: Xa
    Xaa\P 
Partial match: Xaa
    Xaaa\P
Partial match: Xaaa
    Xaaaa\P 
Partial match: Xaaaa
    
/X\D{2,4}+b/8
    X\P
Partial match: X
    Xa\P
Partial match: Xa
    Xaa\P 
Partial match: Xaa
    Xaaa\P
Partial match: Xaaa
    Xaaaa\P 
Partial match: Xaaaa

/X\D{2,4}b/8
    X\P
Partial match: X
    X\x{123}\P
Partial match: X\x{123}
    X\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}\x{123}\x{123}
    
/X\D{2,4}?b/8
    X\P
Partial match: X
    X\x{123}\P
Partial match: X\x{123}
    X\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}\x{123}\x{123}
    
/X\D{2,4}+b/8
    X\P
Partial match: X
    X\x{123}\P
Partial match: X\x{123}
    X\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}\x{123}\x{123}

/X[abc]{2,4}b/8
    X\P
Partial match: X
    Xa\P
Partial match: Xa
    Xaa\P 
Partial match: Xaa
    Xaaa\P
Partial match: Xaaa
    Xaaaa\P 
Partial match: Xaaaa
    
/X[abc]{2,4}?b/8
    X\P
Partial match: X
    Xa\P
Partial match: Xa
    Xaa\P 
Partial match: Xaa
    Xaaa\P
Partial match: Xaaa
    Xaaaa\P 
Partial match: Xaaaa
    
/X[abc]{2,4}+b/8
    X\P
Partial match: X
    Xa\P
Partial match: Xa
    Xaa\P 
Partial match: Xaa
    Xaaa\P
Partial match: Xaaa
    Xaaaa\P 
Partial match: Xaaaa

/X[abc\x{123}]{2,4}b/8
    X\P
Partial match: X
    X\x{123}\P
Partial match: X\x{123}
    X\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}\x{123}\x{123}
    
/X[abc\x{123}]{2,4}?b/8
    X\P
Partial match: X
    X\x{123}\P
Partial match: X\x{123}
    X\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}\x{123}\x{123}
    
/X[abc\x{123}]{2,4}+b/8
    X\P
Partial match: X
    X\x{123}\P
Partial match: X\x{123}
    X\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}\x{123}\x{123}

/X[^a]{2,4}b/8
    X\P
Partial match: X
    Xz\P
Partial match: Xz
    Xzz\P 
Partial match: Xzz
    Xzzz\P
Partial match: Xzzz
    Xzzzz\P 
Partial match: Xzzzz
    
/X[^a]{2,4}?b/8
    X\P
Partial match: X
    Xz\P
Partial match: Xz
    Xzz\P 
Partial match: Xzz
    Xzzz\P
Partial match: Xzzz
    Xzzzz\P 
Partial match: Xzzzz
    
/X[^a]{2,4}+b/8
    X\P
Partial match: X
    Xz\P
Partial match: Xz
    Xzz\P 
Partial match: Xzz
    Xzzz\P
Partial match: Xzzz
    Xzzzz\P 
Partial match: Xzzzz

/X[^a]{2,4}b/8
    X\P
Partial match: X
    X\x{123}\P
Partial match: X\x{123}
    X\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}\x{123}\x{123}
    
/X[^a]{2,4}?b/8
    X\P
Partial match: X
    X\x{123}\P
Partial match: X\x{123}
    X\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}\x{123}\x{123}
    
/X[^a]{2,4}+b/8
    X\P
Partial match: X
    X\x{123}\P
Partial match: X\x{123}
    X\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}
    X\x{123}\x{123}\x{123}\P
Partial match: X\x{123}\x{123}\x{123}
    X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: X\x{123}\x{123}\x{123}\x{123}

/(Y)X\1{2,4}b/8
    YX\P
Partial match: YX
    YXY\P
Partial match: YXY
    YXYY\P 
Partial match: YXYY
    YXYYY\P
Partial match: YXYYY
    YXYYYY\P 
Partial match: YXYYYY
    
/(Y)X\1{2,4}?b/8
    YX\P
Partial match: YX
    YXY\P
Partial match: YXY
    YXYY\P 
Partial match: YXYY
    YXYYY\P
Partial match: YXYYY
    YXYYYY\P 
Partial match: YXYYYY
    
/(Y)X\1{2,4}+b/8
    YX\P
Partial match: YX
    YXY\P
Partial match: YXY
    YXYY\P 
Partial match: YXYY
    YXYYY\P
Partial match: YXYYY
    YXYYYY\P 
Partial match: YXYYYY

/(\x{123})X\1{2,4}b/8
    \x{123}X\P
Partial match: \x{123}X
    \x{123}X\x{123}\P
Partial match: \x{123}X\x{123}
    \x{123}X\x{123}\x{123}\P 
Partial match: \x{123}X\x{123}\x{123}
    \x{123}X\x{123}\x{123}\x{123}\P
Partial match: \x{123}X\x{123}\x{123}\x{123}
    \x{123}X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: \x{123}X\x{123}\x{123}\x{123}\x{123}
    
/(\x{123})X\1{2,4}?b/8
    \x{123}X\P
Partial match: \x{123}X
    \x{123}X\x{123}\P
Partial match: \x{123}X\x{123}
    \x{123}X\x{123}\x{123}\P 
Partial match: \x{123}X\x{123}\x{123}
    \x{123}X\x{123}\x{123}\x{123}\P
Partial match: \x{123}X\x{123}\x{123}\x{123}
    \x{123}X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: \x{123}X\x{123}\x{123}\x{123}\x{123}
    
/(\x{123})X\1{2,4}+b/8
    \x{123}X\P
Partial match: \x{123}X
    \x{123}X\x{123}\P
Partial match: \x{123}X\x{123}
    \x{123}X\x{123}\x{123}\P 
Partial match: \x{123}X\x{123}\x{123}
    \x{123}X\x{123}\x{123}\x{123}\P
Partial match: \x{123}X\x{123}\x{123}\x{123}
    \x{123}X\x{123}\x{123}\x{123}\x{123}\P 
Partial match: \x{123}X\x{123}\x{123}\x{123}\x{123}

/\bthe cat\b/8
    the cat\P
 0: the cat
    the cat\P\P
Partial match: the cat

/abcd*/8
    xxxxabcd\P
 0: abcd
    xxxxabcd\P\P
Partial match: abcd

/abcd*/i8
    xxxxabcd\P
 0: abcd
    xxxxabcd\P\P
Partial match: abcd
    XXXXABCD\P
 0: ABCD
    XXXXABCD\P\P
Partial match: ABCD

/abc\d*/8
    xxxxabc1\P
 0: abc1
    xxxxabc1\P\P
Partial match: abc1

/(a)bc\1*/8
    xxxxabca\P
 0: abca
 1: a
    xxxxabca\P\P
Partial match: abca

/abc[de]*/8
    xxxxabcde\P
 0: abcde
    xxxxabcde\P\P
Partial match: abcde

/X\W{3}X/8
    \PX
Partial match: X

/\h/SI
Capturing subpattern count = 0
No options
No first char
No need char
Subject length lower bound = 1
Starting byte set: \x09 \x20 \xa0 

/\h/SI8
Capturing subpattern count = 0
Options: utf8
No first char
No need char
Subject length lower bound = 1
Starting byte set: \x09 \x20 \xc2 \xe1 \xe2 \xe3 
    ABC\x{09}
 0: \x{09}
    ABC\x{20}
 0:  
    ABC\x{a0}
 0: \x{a0}
    ABC\x{1680}
 0: \x{1680}
    ABC\x{180e}
 0: \x{180e}
    ABC\x{2000}
 0: \x{2000}
    ABC\x{202f} 
 0: \x{202f}
    ABC\x{205f} 
 0: \x{205f}
    ABC\x{3000} 
 0: \x{3000}

/\v/SI
Capturing subpattern count = 0
No options
No first char
No need char
Subject length lower bound = 1
Starting byte set: \x0a \x0b \x0c \x0d \x85 

/\v/SI8
Capturing subpattern count = 0
Options: utf8
No first char
No need char
Subject length lower bound = 1
Starting byte set: \x0a \x0b \x0c \x0d \xc2 \xe2 
    ABC\x{0a}
 0: \x{0a}
    ABC\x{0b}
 0: \x{0b}
    ABC\x{0c}
 0: \x{0c}
    ABC\x{0d}
 0: \x{0d}
    ABC\x{85}
 0: \x{85}
    ABC\x{2028}
 0: \x{2028}

/\R/SI
Capturing subpattern count = 0
No options
No first char
No need char
Subject length lower bound = 1
Starting byte set: \x0a \x0b \x0c \x0d \x85 

/\R/SI8
Capturing subpattern count = 0
Options: utf8
No first char
No need char
Subject length lower bound = 1
Starting byte set: \x0a \x0b \x0c \x0d \xc2 \xe2 

/\h*A/SI8
Capturing subpattern count = 0
Options: utf8
No first char
Need char = 'A'
Subject length lower bound = 1
Starting byte set: \x09 \x20 A \xc2 \xe1 \xe2 \xe3 
    CDBABC
 0: A
    
/\v+A/SI8
Capturing subpattern count = 0
Options: utf8
No first char
Need char = 'A'
Subject length lower bound = 2
Starting byte set: \x0a \x0b \x0c \x0d \xc2 \xe2 

/\s?xxx\s/8SI
Capturing subpattern count = 0
Options: utf8
No first char
Need char = 'x'
Subject length lower bound = 4
Starting byte set: \x09 \x0a \x0c \x0d \x20 x 

/\sxxx\s/8T1
    AB\x{85}xxx\x{a0}XYZ
 0: \x{85}xxx\x{a0}
    AB\x{a0}xxx\x{85}XYZ
 0: \x{a0}xxx\x{85}

/\sxxx\s/I8ST1
Capturing subpattern count = 0
Options: utf8
No first char
Need char = 'x'
Subject length lower bound = 5
Starting byte set: \x09 \x0a \x0c \x0d \x20 \xc2 
    AB\x{85}xxx\x{a0}XYZ
 0: \x{85}xxx\x{a0}
    AB\x{a0}xxx\x{85}XYZ
 0: \x{a0}xxx\x{85}

/\S \S/8T1
    \x{a2} \x{84} 
 0: \x{a2} \x{84}

/\S \S/I8ST1
Capturing subpattern count = 0
Options: utf8
No first char
Need char = ' '
Subject length lower bound = 3
Starting byte set: \x00 \x01 \x02 \x03 \x04 \x05 \x06 \x07 \x08 \x0b \x0e 
  \x0f \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17 \x18 \x19 \x1a \x1b \x1c \x1d 
  \x1e \x1f ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e 
  f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f \xc0 \xc1 \xc2 \xc3 
  \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb \xcc \xcd \xce \xcf \xd0 \xd1 \xd2 
  \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda \xdb \xdc \xdd \xde \xdf \xe0 \xe1 
  \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 \xea \xeb \xec \xed \xee \xef \xf0 
  \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 \xfa \xfb \xfc \xfd \xfe \xff 
    \x{a2} \x{84} 
 0: \x{a2} \x{84}
    A Z 
 0: A Z

'A#хц'8x<any>BZ
------------------------------------------------------------------
        Bra
        A
        Ket
        End
------------------------------------------------------------------

'A#хц
  PQ'8x<any>BZ
------------------------------------------------------------------
        Bra
        APQ
        Ket
        End
------------------------------------------------------------------
  
/a+#хaa
  z#XX?/8x<any>BZ 
------------------------------------------------------------------
        Bra
        a++
        z
        Ket
        End
------------------------------------------------------------------

/a+#хaa
  z#х?/8x<any>BZ 
------------------------------------------------------------------
        Bra
        a++
        z
        Ket
        End
------------------------------------------------------------------

/\g{A}xxx#bXX(?'A'123)(?'A'456)/8x<any>BZ
------------------------------------------------------------------
        Bra
        \1
        xxx
        CBra 1
        456
        Ket
        Ket
        End
------------------------------------------------------------------

/\g{A}xxx#bх(?'A'123)(?'A'456)/8x<any>BZ
------------------------------------------------------------------
        Bra
        \1
        xxx
        CBra 1
        456
        Ket
        Ket
        End
------------------------------------------------------------------

/a+/8
    a\x{123}aa\>1
 0: aa
    a\x{123}aa\>2
Error -11 (bad UTF-8 offset)
    a\x{123}aa\>3
 0: aa
    a\x{123}aa\>4
 0: a
    a\x{123}aa\>5
No match
    a\x{123}aa\>6
Error -24 (bad offset value)

/^\cģ/8
Failed: \c must be followed by an ASCII character at offset 3

/(\R*)(.)/s8
    \r\n
 0: \x{0d}
 1: 
 2: \x{0d}
    \r\r\n\n\r 
 0: \x{0d}\x{0d}\x{0a}\x{0a}\x{0d}
 1: \x{0d}\x{0d}\x{0a}\x{0a}
 2: \x{0d}
    \r\r\n\n\r\n 
 0: \x{0d}\x{0d}\x{0a}\x{0a}\x{0d}
 1: \x{0d}\x{0d}\x{0a}\x{0a}
 2: \x{0d}

/(\R)*(.)/s8
    \r\n
 0: \x{0d}
 1: <unset>
 2: \x{0d}
    \r\r\n\n\r 
 0: \x{0d}\x{0d}\x{0a}\x{0a}\x{0d}
 1: \x{0a}
 2: \x{0d}
    \r\r\n\n\r\n 
 0: \x{0d}\x{0d}\x{0a}\x{0a}\x{0d}
 1: \x{0a}
 2: \x{0d}

/\x{1234}+/iS8I
Capturing subpattern count = 0
Options: caseless utf8
No first char
No need char
Subject length lower bound = 1
Starting byte set: \xe1 

/\x{1234}+?/iS8I
Capturing subpattern count = 0
Options: caseless utf8
No first char
No need char
Subject length lower bound = 1
Starting byte set: \xe1 

/\x{1234}++/iS8I
Capturing subpattern count = 0
Options: caseless utf8
No first char
No need char
Subject length lower bound = 1
Starting byte set: \xe1 

/\x{1234}{2}/iS8I
Capturing subpattern count = 0
Options: caseless utf8
No first char
No need char
Subject length lower bound = 2
Starting byte set: \xe1 

/[^\x{1234}]+/iS8I   
Capturing subpattern count = 0
Options: caseless utf8
No first char
No need char
Subject length lower bound = 1
No set of starting bytes

/[^\x{1234}]+?/iS8I   
Capturing subpattern count = 0
Options: caseless utf8
No first char
No need char
Subject length lower bound = 1
No set of starting bytes

/[^\x{1234}]++/iS8I   
Capturing subpattern count = 0
Options: caseless utf8
No first char
No need char
Subject length lower bound = 1
No set of starting bytes

/[^\x{1234}]{2}/iS8I
Capturing subpattern count = 0
Options: caseless utf8
No first char
No need char
Subject length lower bound = 2
No set of starting bytes

//<bsr_anycrlf><bsr_unicode>
Failed: inconsistent NEWLINE options at offset 0

/f.*/
    \P\Pfor
Partial match: for

/f.*/s
    \P\Pfor
Partial match: for

/f.*/8
    \P\Pfor
Partial match: for

/f.*/8s
    \P\Pfor
Partial match: for

/-- End of testinput5 --/
